// 定义State
// 'state' should be a method that returns an object in store/user.js 
// 在muxt中State必须声明为一个函数，且返回一个 对象
export const state = () => ({
    userinfo: {
        token: '',
        user: {}
    }
})

// 定义mutations
export const mutations = {
    // 有一个默认参数state，通过state就可以获取在state中定义的成员
    // 第二个参数是你调用这个方法时所传递的数据，可以是任意类型的数据
    setUserInfo(state, data) {
        // state.userinfo = data
        // setTimeout(() => {
        state.userinfo.token = data.token
        state.userinfo.user = data.user
            // }, 1000);
    },
    // clearUserInfo(state){
    //     state.userinfo = {}
    // }
};


// 定义actions
export const actions = {
    // 这个函数中可以来执行异步操作，拿到异步操作的结果，调用mutaitons中的方法，达到为state中的成员赋值的目的
    // store：是默认的参数
    setUserInfoAction(store, data) {
        // store就是当前的仓库对象，里面的commot函数可以调用mutaitons中的成员
        // 调用mutations中的成员
        store.commit('setUserInfo', data)
    },
    // 将登陆操作封装到actions中
    loginAction({ commit }, canshu) {
        // 异步请示
        return this.$axios({
            method: "post",
            url: "/accounts/login",
            data: canshu
        }).then(res => {
            // 如果在user仓库外部调用actions或者mutations中的方法，则需要使用this.$store
            // 如果在同一个仓库中进行方法的调用，则不需要再写this.$store了
            // 同时在同一个仓库中调用方法，也不需要再指定仓库，默认就是当前仓库
            // this.$store.commit('user/setUserInfo',res.data)
            commit('setUserInfo', res.data)
                // 如果在外围还需要使用这个值，则必须返回
            return res
        })
    }
}